]> git.r.bdr.sh - rbdr/super-polarity/blobdiff - Super Polarity/ActorFactory.cs
Merge branch 'master' of github.com:benbeltran/super-polarity
[rbdr/super-polarity] / Super Polarity / ActorFactory.cs
diff --git a/Super Polarity/ActorFactory.cs b/Super Polarity/ActorFactory.cs
new file mode 100644 (file)
index 0000000..f9c7697
--- /dev/null
@@ -0,0 +1,144 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Content;
+
+namespace SuperPolarity
+{
+    static class ActorFactory
+    {
+        static internal SuperPolarity Game;
+
+        static public MainShip CreateMainShip(Vector2 position)
+        {
+            MainShip mainShip = new MainShip(Game);
+            mainShip.Initialize(Game.Content.Load<Texture2D>("Graphics\\main-ship"), position);
+
+            ActorManager.CheckIn(mainShip);
+
+            return mainShip;
+        }
+
+        static public StandardShip CreateShip(Ship.Polarity polarity, Vector2 position)
+        {
+            StandardShip ship = new StandardShip(Game);
+            Texture2D texture;
+            
+            if (polarity == Ship.Polarity.Positive)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\positive-ship");
+            }
+            else if (polarity == Ship.Polarity.Negative)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\negative-ship");
+            }
+            else
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\neutral-ship");
+            }
+
+            ship.Initialize(texture, position);
+            ship.SetPolarity(polarity);
+
+            ActorManager.CheckIn(ship);
+
+            return ship;
+        }
+
+        internal static void SetGame(SuperPolarity game)
+        {
+            ActorFactory.Game = game;
+        }
+
+        internal static Bullet CreateBullet(Vector2 position, float angle)
+        {
+            Bullet bullet = new Bullet(Game);
+
+            bullet.Initialize(Game.Content.Load<Texture2D>("Graphics\\square"), position);
+
+            bullet.Angle = angle;
+
+            ActorManager.CheckIn(bullet);
+
+            return bullet;
+        }
+
+        static public StandardShip CreateScout(Ship.Polarity polarity, Vector2 position)
+        {
+            StandardShip ship = new StandardShip(Game);
+            Texture2D texture;
+
+            if (polarity == Ship.Polarity.Positive)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\positive-scout");
+            }
+            else if (polarity == Ship.Polarity.Negative)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\negative-scout");
+            }
+            else
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\neutral-scout");
+            }
+
+            ship.BoxDimensions.X = 10;
+            ship.BoxDimensions.Y = 10;
+            ship.BoxDimensions.W = 10;
+            ship.BoxDimensions.Z = 10;
+
+            ship.Initialize(texture, position);
+            ship.MaxVelocity = 5.2f;
+            ship.FleeVelocity = 6.5f;
+            ship.ChargeVelocity = 5.5f;
+            ship.Value = 3;
+            ship.HP = 0;
+            ship.AngleChangeProbability = 20;
+            ship.SetPolarity(polarity);
+
+            ActorManager.CheckIn(ship);
+
+            return ship;
+        }
+
+        static public StandardShip CreateCruiser(Ship.Polarity polarity, Vector2 position)
+        {
+            StandardShip ship = new StandardShip(Game);
+            Texture2D texture;
+
+            if (polarity == Ship.Polarity.Positive)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\positive-cruiser");
+            }
+            else if (polarity == Ship.Polarity.Negative)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\negative-cruiser");
+            }
+            else
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\neutral-cruiser");
+            }
+
+            ship.BoxDimensions.X = 40;
+            ship.BoxDimensions.Y = 40;
+            ship.BoxDimensions.W = 40;
+            ship.BoxDimensions.Z = 40;
+
+            ship.Initialize(texture, position);
+            ship.MagneticRadius = 1000;
+            ship.RepelRadius = 200;
+            ship.MaxVelocity = 0.5f;
+            ship.FleeVelocity = 5;
+            ship.ChargeVelocity = 1;
+            ship.Value = 10;
+            ship.HP = 29;
+            ship.SetPolarity(polarity);
+
+            ActorManager.CheckIn(ship);
+
+            return ship;
+        }
+    }
+}